package d0508;

/**
 * 
 * 	
	下列正确的有（ ） 
	A.
	call by value不会改变实际参数的数值 		对的
	B.
	call by reference能改变实际参数的参考地址 	错误
	C.
	call by reference不能改变实际参数的参考地址 	对的
	D.
	call by reference能改变实际参数的内容 
	
	引用数据类型:
		1. 对象
		2. 数组
		3. 字符串

 *
 */
public class Demo {
	
	public static void main(String[] args) {
		
		int a = 100;
		test(a);
		System.out.println("test 函数外部的 a = " + a);
		
		System.out.println("===============================");
		int[] a1 = new int[5];
		test(a1);
		System.out.println("test 函数外部的 a1 的长度 " + a1.length);
		
		System.out.println("===============================");
		int[] a2 = new int[5];
		test1(a2);
		System.out.println("test 函数外部的 a2 的第一个元素值是 " + a2[0]);
	}
	
	static void test( int a) {
		a = a + 100;
		System.out.println("test 函数内部的 a = " + a);
	}
	
	/**
	 * 
	 * @param arr  是数组==> 引用数据类型
	 */
	static void test (int[] arr) {
		// 重新赋值
		arr = new int[10] ;
		System.out.println("test 函数内部的 arr 的长度 " + arr.length);
	}
	
	static void test1 (int[] arr) {
		// 对数组的第一个元素赋值
		arr[0] = 100;
		System.out.println("test 函数内部的 arr 的第一个元素值是 " + arr[0]);
	}

}
